﻿using System.Xml;
using System.Xml.Serialization;

namespace Bpmn.Xml;

/// <remarks/>
[Serializable]
[XmlType(Namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", TypeName = "tSubChoreography")]
[XmlRoot("subChoreography", Namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", IsNullable = false)]
public partial class SubChoreography : ChoreographyActivity
{
    /// <remarks/>
    [XmlElement("adHocSubProcess", typeof(AdHocSubProcess))]
    [XmlElement("boundaryEvent", typeof(BoundaryEvent))]
    [XmlElement("businessRuleTask", typeof(BusinessRuleTask))]
    [XmlElement("callActivity", typeof(CallActivity))]
    [XmlElement("callChoreography", typeof(CallChoreography))]
    [XmlElement("choreographyTask", typeof(ChoreographyTask))]
    [XmlElement("complexGateway", typeof(ComplexGateway))]
    [XmlElement("dataObject", typeof(DataObject))]
    [XmlElement("dataObjectReference", typeof(DataObjectReference))]
    [XmlElement("dataStoreReference", typeof(DataStoreReference))]
    [XmlElement("endEvent", typeof(EndEvent))]
    [XmlElement("event", typeof(Event))]
    [XmlElement("eventBasedGateway", typeof(EventBasedGateway))]
    [XmlElement("exclusiveGateway", typeof(ExclusiveGateway))]
    [XmlElement("flowElement", typeof(FlowElement))]
    [XmlElement("implicitThrowEvent", typeof(ImplicitThrowEvent))]
    [XmlElement("inclusiveGateway", typeof(InclusiveGateway))]
    [XmlElement("intermediateCatchEvent", typeof(IntermediateCatchEvent))]
    [XmlElement("intermediateThrowEvent", typeof(IntermediateThrowEvent))]
    [XmlElement("manualTask", typeof(ManualTask))]
    [XmlElement("parallelGateway", typeof(ParallelGateway))]
    [XmlElement("receiveTask", typeof(ReceiveTask))]
    [XmlElement("scriptTask", typeof(ScriptTask))]
    [XmlElement("sendTask", typeof(SendTask))]
    [XmlElement("sequenceFlow", typeof(SequenceFlow))]
    [XmlElement("serviceTask", typeof(ServiceTask))]
    [XmlElement("startEvent", typeof(StartEvent))]
    [XmlElement("subChoreography", typeof(SubChoreography))]
    [XmlElement("subProcess", typeof(SubProcess))]
    [XmlElement("task", typeof(Task))]
    [XmlElement("transaction", typeof(Transaction))]
    [XmlElement("userTask", typeof(UserTask))]
    public FlowElement[] Items { get; set; } = default!;

    /// <remarks/>
    [XmlElement("artifact", typeof(Artifact))]
    [XmlElement("association", typeof(Association))]
    [XmlElement("group", typeof(Group))]
    [XmlElement("textAnnotation", typeof(TextAnnotation))]
    public Artifact[] Items1 { get; set; } = default!;
}
